package ar.edu.utn.frgp.banco.servlets;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;




import ar.edu.utn.frgp.banco.domain.Cliente;
import ar.edu.utn.frgp.banco.domain.Cuenta;
import ar.edu.utn.frgp.banco.domain.Movimientos;

import ar.edu.utn.frgp.banco.domain.Prestamo;
import ar.edu.utn.frgp.banco.service.RecursoServiceCuenta;
import ar.edu.utn.frgp.banco.service.RecursoServiceMovimientos;
import ar.edu.utn.frgp.banco.service.RecursoServicePrestamos;
import ar.edu.utn.frgp.banco.service.impl.RecursoServiceCuentaImpl;
import ar.edu.utn.frgp.banco.service.impl.RecursoServiceMovimientosImpl;
import ar.edu.utn.frgp.banco.service.impl.RecursoServicePrestamosImpl;
import ar.edu.utn.frgp.banco.servlets.scope.CuentaBean;
import ar.edu.utn.frgp.banco.servlets.scope.MessageBean;

public class Prestamo2OtorgarPrestamoServlet extends GenericServlet {
	private static final long serialVersionUID = 1L;

    /**
     * Default constructor. 
     */
    public Prestamo2OtorgarPrestamoServlet() {
        // TODO Auto-generated constructor stub
    }

	@Override
	public void realizarAccion(HttpServletRequest req, HttpServletResponse resp) throws Exception {
		
		String cuenta = (String)req.getParameter("cmbCuenta");
		String cantCuotas = (String)req.getParameter("cantidadcuotas");
		String montoPrestamo = (String)req.getParameter("monto");
		
		
		Cliente elCliente = (Cliente)req.getSession().getAttribute("cliente");
		
		int cuentaCliente = Integer.parseInt(cuenta);
		double montoSolicitado = Double.parseDouble(montoPrestamo);
		int dniCliente = elCliente.getDni();
		int cuotas =Integer.parseInt(cantCuotas);
		//double montototal;
		//double valorcuota;
		double interes=15;
		
		Cuenta cu = new Cuenta();
		Prestamo regPrestamo = new Prestamo();
		Movimientos regMovimiento = new Movimientos();
		
		RecursoServiceCuenta serviceCuenta = new RecursoServiceCuentaImpl();
		RecursoServicePrestamos servicePrestamos = new RecursoServicePrestamosImpl();
		RecursoServiceMovimientos serviceMovimientos = new RecursoServiceMovimientosImpl();
		
		
		String jsp = "";
		
		if (montoSolicitado < 5000) {
			MessageBean bean = new MessageBean();
			bean.setMensaje("El monto Minimo Del Prestamo es 5000");
			req.setAttribute("msjBean", bean);
			jsp = "Prestamo2OtorgarPrestamo.jsp";
			
			req.getSession().setAttribute("cliente", elCliente); // le mando todo lo que le mande la primera vez
			
			
			List<Cuenta> cuentas = new ArrayList<Cuenta>();		
			cuentas = serviceCuenta.listarCuentasActivas(elCliente.getDni());
			
			CuentaBean beancuenta = new CuentaBean();
	        beancuenta.setCuentas(cuentas);
			
			req.setAttribute("beancuenta", beancuenta);
		}
		else {
			
			jsp = "menuprestamos.jsp";
						
			cu = serviceCuenta.buscarCuenta(cuentaCliente); //busco y traigo la cuenta de la cual se va a debitar el monto
			
			cu.setSaldo(cu.getSaldo()+ montoSolicitado );// modifico el saldo de esa cuenta (saldo de la cuenta - monto fijo del servicio)
			serviceCuenta.modificarSaldoCuenta(cu);/// le mando a modificar saldo cuenta la cuenta con el saldo modificado
				
			//montototal = montoSolicitado + (montoSolicitado*interes/100);
			//valorcuota = montototal/cuotas;
			
			regPrestamo.cargarPrestamo(dniCliente,montoSolicitado, cuotas, interes, cuentaCliente);
			servicePrestamos.registrarPrestamo(regPrestamo);
			
			regMovimiento.cargarMovimiento(cuentaCliente, 2, 4, cu.getSaldo(),montoSolicitado);
			serviceMovimientos.registrarMovimiento(regMovimiento);
			
		}
	
			req.getRequestDispatcher(jsp).forward(req, resp);

	
          
		
		         
	
	}
}

